home *** CD-ROM | disk | FTP | other *** search
- ==============================================================================
-
- HAPPy(H.Asano Pascal Processing system)
- Version 0.0
-
- 操 作 説 明 書
-
- Copyright (c) H.Asano 1992
-
- ==============================================================================
-
- ┌──────────── 目 次 ──────────────┐
- │ │
- │ 1. はじめに │
- │ 2. 操作概要 │
- │ 3. コンパイラ │
- │ 3.1 環境変数TMP │
- │ 3.2 コンパイラコマンド │
- │ 3.3 -cオプション │
- │ 3.4 -aオプション │
- │ 3.5 -dオプション │
- │ 3.6 Pascalソース上の注釈によるコンパイラへの指示 │
- │ 4. インタプリタ │
- │ 4.1 インタプリタコマンド │
- │ 4.2 -iオプション │
- │ 4.3 -tオプション │
- │ 4.4 input、outputファイルの割当 │
- │ 4.5 inputファイルに対する入力 │
- │ 4.6 input,output以外のファイルの扱い │
- │ 5. 終了コードとその応用例 │
- │ 6. ランタイムエラーとPascalソースの対応の取り方 │
- │ │
- └─────────────────────────────────┘
-
-
- 1.はじめに
-
- このドキュメントをお読みになる前に、「HAPPy総合解説書(HAPPY.DOC)」
- をお読み下さい。
- このドキュメントは、HAPPyの使い方全般について説明します。
- なお、HAPPy Pascalの文法については、「HAPPy Pascal
- 文法書(LANGUAGE.DOC) 」(Version0.0 では未完成。ごめんなさい) 、エラーメッ
- セージについては「エラーメッセージ説明書(ERROR.DOC)」を参照してください。
-
-
-
- 2.操作概要
-
- HAPPyは、P─codeインタプリタ方式の処理系なので、プログラム作成
- の流れは次のようになります。
- (1) テキストエディタでPascalのソースファイルを作る。
- (2) pcコマンド(コンパイラ) で、P-codeにコンパイルする。
- エラーがあれば、テキストエディタでエラー箇所を修正し、エラーが
- なくなるまでコンパイル、修正を繰り返す。
- (3) piコマンド(P-codeインタプリタ)で、コンパイルしたP-
- codeを実行する。
-
- 下の図は、HAPPyが使う各ファイルの関係を示したものです。
-
- ★ pcコマンド
- コンパイラ
- ┌────┐ ┌─────┐ ┌──────┐
- │Pascal │(入力)│PC.EXE │-aオプション指定時│アセンブルリスト │
- │ソース │───→│(PA.OVL) │─────→ │ │
- │ファイル│ └─────┘──┐ │(標準出力)│
- └────┘┌─── │ │ └──────┘
- │ │(出力) └───┐
- ↓ ↓ ↓(コンパイルエラー時)
- ┌────────┐ ┌──────────┐┌──────┐
- │環境変数TMP で │ │P-codeオブジェクトファイル ││コンパイルエラ │
- │指定したディレクトリ │ │(カレントディレクトリにファイル名││ メッセージ │
- │にP-codeソース │ │ pcode.pco が ││ (標準出力) │
- │(pcode.pcs) が │ │ 作られる ) │└──────┘
- │できる │ └──────────┘
- └────────┘ │
- ---------------│------------------
- │
- ★ piコマンド │
- ↓(入力)
- ┌────┐ (入力)┌─────┐ (出力)┌────┐
- │標準入力│────→│PI.EXE │────→│標準出力│
- │(input) │ │(インタプリタ) │────→│(output)│
- └────┘ └─────┘ (トレース) └────┘
- (通常はコンソール) ↑ (通常はコンソール)
- ↓
- ┌──────┐
- │各種ファイル│
- └──────┘
-
-
-
- 3.コンパイラ
-
- 3.1 環境変数TMP
-
- コンパイラは、環境変数TMPに指定されたディレクトリにP-codeソースファイ
- ルを作成します。
- TMPに、RAMディスクやハードディスク、あるいはコンパイルしようとして
- いるPascalソースのあるドライブとは違うドライブの作業用ディレクトリを
- を指定すると、TMPの指定がない場合よりもコンパイル速度が上がります。
- 例えばHドライブがRAMディスクであれば、 MS-DOS のSET コマンドで次のよ
- うに指定して下さい。
- SET TMP=H:\
- ディレクトリ指定なので、最後は¥で終わってください。
- SET TMP=H:\HAPPY
- という設定の場合、P-codeソースは、\HAPPYPCO.PCS という名前になってしまいま
- す。HAPPY というディレクトリがある場合には、
- SET TMP=\HAPPY\
- として下さい。なお、TMPの設定は必須ではありません。設定がなければカレン
- トディレクトリにP-codeソースファイルを作ります。このため、ファイルの読み書
- きに多少時間がかかるので、コンパイル速度が落ちます。
-
-
- 3.2 コンパイラコマンド
-
- コンパイラコマンドは、「pc」です。
- 指定したソースファイルを読み込み、カレントディレクトリに、
- P-codeオプジェクトファイル (pcode.pco)
- を作ります。このファイル名は固定です。すでにファイルが存在する時は上書きし
- ます。コンパイルエラーが起きた場合あるいは、-cオプションを指定した場合に
- はこのオブジェクトファイルは生成されません。
- ┌───────────────────────┐
- │pc [オプション...] ソースファイル名 │
- └───────────────────────┘
- 単に、pc とだけタイプすると、簡単な使い方の説明が出てきます。
- オプションは、その名の通り、必要に応じて指定するもので、普段は省略してか
- まいません。オプションを指定する時は、下表の物を空白で区切って指定します。
- または、- の次にオプションに対応する英字を続けて指定します。
- 次の2つの指定方法は、同じ意味になります。
- pc -i -d -a CALENDER.PAS
- pc -ida CALENDER.PAS
-
- ┌───┬─────────────────────┐
- │オプション│ 意 味 │
- ├───┼─────────────────────┤
- │ -c │P-codeを生成しない │
- │ -d │デバッグ指令(検査を行うコードを生成する)│
- │ -a │アセンブルリストを標準出力に出力する │
- └───┴─────────────────────┘
-
- 上の表では各オプションは英小文字で表現してありますが、対応する英大文字で
- 指定しても効果は同じです。
- 各オプションを重ねて指定した場合、互いに反するオプション( -cとそれ以外
- )は、後に指定した方が有効になります。例えば
- pc -c -d -a CALENDER.PAS
- の場合は、 -cオプションが指定無効です。
- pc -a -d -c CALENDER.PAS
- の場合には、逆に、-a, -dオプションは無視されるため、P-codeオブジェクトは生
- 成されません。
-
-
- 3.3 -cオプション
-
- P-codeの生成を行いません。
- はじめからコンパイルエラーがあることがわかっている場合、このオプションを
- 指定すると、高速にコンパイルエラーチェックが行えます。
-
-
- 3.4 -aオプション
-
- コンパイルされたP-codeのアセンブルリストを標準出力に出力します。
- 標準出力をリダイレクトしてファイルに落として、インタプリタのランタイムエラ
- ーの解析に使います。解析方法は6章を参照して下さい。
- Version 0.0 ではP-codeの仕様を公開していませんので、アセンブルリス
- トの説明は省略します。
-
-
- 3.5 -dオプション
-
- 部分範囲型の範囲チェック、配列の添字チェック等、プログラムの各種誤りをチ
- ェックするP-codeを生成します。
- プログラムのデバッグ期間中は、このオプションを指定しておくと誤りの発見が
- 容易になります。プログラムが完成した時には、このオプションを指定せずに再び
- コンパイルしてください。
- なお、このオプションの指定よりもPascalソース上に指定する{$d+ }、
- {$d- }指示(3.6章参照)の方が優先します。
- このオプションの指定により、インタプリタ実行時に以下の項目をチェックしま
- す。
- ・配列の添字チェック
- ・ポインタ変数のnilチェック
- ・ポインタ変数の不定チェック
- ・代入文の代入可能性チェック
- ・for文の制御変数の代入可能性チェック
- ・値引数の代入可能性チェック
- ・テキストファイル以外のreadにおける代入可能性チッック
- ・テキストファイル以外のwriteにおける代入可能性チェック
- ・packの添字チェック
- ・unpackの添字チェック
- ・unpackの転送可能性チェック
- ・集合構成子の順序式値のHAPPy制限チェック
-
-
- 3.6 Pascalソース上の注釈によるコンパイラへの指示
-
- Pascalソース上に、コンパイラへの指示を入れることができます。指示は
- 注釈の形をしているので、プログラムの意味には影響しません。指示は、下表のよ
- うな形で指定してください。注釈の開始の{または(*にすぐ続けて$を書き、続
- けてdまたはt、そして+または-です。その後は自由です。間に空白などを置く
- と、指示と見なされませんので注意して下さい。
-
- ┌────┬─────────────┐
- │ 指示 │ 動 作 │
- ├────┼─────────────┤
- │{$d+ }│検査コードを生成する │
- │{$d- }│検査コードを生成しない │
- │{$t+ }│ここよりトレースをとる │
- │{$t- }│ここよりトレースをやめる │
- └────┴─────────────┘
-
- {$d+ }と{$d- }は、ペアで使います。
- つまり、検査コードを生成したい場所を囲んで指定すれば、そこの範囲だけ検査
- コードが生成されるので、コンパイラの-dオプションを指定した時よりも、全体
- のオブジェクトサイズや実行速度の点で有利になります。なお、-dオプションが
- あっても、{$d- }指示が現れた時点以降は検査コードの生成は行われません。
-
- {$t+ }と{$t- }も、ペアで使います。
- {$t+ }が指定された場所に、仮想計算機のレジスタ内容をダンプする命令を生
- 成します。このため、ここよりトレースが開始されます。
- {$t- }が指定された場所に、仮想計算機のレジスタ内容ダンプの中止命令を生
- 成します。このため、ここよりトレースが中止されます。
- インタプリタ起動時に、-tオプションを指定した場合には、最初から最後まで
- トレースが取られ、莫大な量になるので、部分的にトレースを取りたい場合に、こ
- の指示を入れてください。なお、-tオプションの指定があっても、{$t- }が現
- れた時点でトレースは中止されます。
-
-
- 4.インタプリタ
-
- 4.1 インタプリタコマンド
-
- インタプリタのコマンドは「pi」です。
- インタプリタは、カレントディレクトリにあるP-codeオブジェクトファイル( フ
- ァイル名pcode.pco 固定) を読み込んで、それを解釈実行していきます。
- 以下に、起動コマンドを示します。
-
- ┌──────────────────────┐
- │pi [-t][-i] │
- └──────────────────────┘
-
- オプションの指定は、通常必要ありませんので、ただ、pi とタイプすれば良
- いのです。
- インタプリタでは、起動パラメータの指定誤りチェックを行っていません。
- オプションが指定された時のみ、その動作を受け付けます。
- それ以外の指定はすべて無視します。
-
- オプションを下表に示します。下表では、オプションが英小文字で書かれていま
- すが、対応する英大文字で指定しても同じ動作をします。
-
- オプションは、-に続いて各文字を連続して指定することもできます。
- pi -i -t
- pi -it
- は同じ動作をします。
-
- ┌───┬──────────────────────────┐
- │オプション│ 意 味 │
- ├───┼──────────────────────────┤
- │-i │インタプリタのバージョン番号、実行するプログラムの情│
- │ │報を表示後、プロクムを実行する │
- │ │ │
- │-t │仮想計算機の実行番地、レジスタ内容、スタック内容を │
- │ │出力する(トレース動作) │
- └───┴──────────────────────────┘
-
-
- 4.2 -iオプション
-
- インタプリタのバージョン番号やHAPPyの説明、実行するプログラムの名前
- などをコンソールに表示後に、プログラムを実行します。
- 実行するプログラム情報の表示内容について、簡単に説明します。
- * Program name = xxxxxxx ・・・ Pascalソースのprogram のあとに指定
- した名前を表示します。
- * Total memory = 8192 words ・・・ 仮想計算機のトータルメモリ量です。
- * Object size = xxxx words ・・・ 実行するプログラムのオブジェクトサ
- イズです。(code+constant data)
- * stack/heap = xxxx words ・・・ トータルメモリからオブジェクトサイ
- ズを引いたメモリサイズです。
- これがスタックとヒープの容量になり
- ます。
-
-
- 4.3 -tオプション
-
- 仮想計算機の動作のトレース情報を、標準出力に出力します。
- Version 0.0 は、仮想計算機の仕様を公開していませんので、ここでは説明しま
- せん。Pascal-P4の仮想計算機とだいたい同じです。
- 私自身のデバッグのために作ったオプションなので、一般には使い道がないと思
- います。
- 各種レジスタの値は、その番地の命令の実行前の内容を示しています。
- なおこのオプションよりも、Pascalソース上の{$t+ }、{$t- }指示(
- 3.6章参照)の方が優先します。
-
-
- 4.4 input、outputファイルの割当
-
- inputファイルは標準入力に割り当たっています。
- outputファイルは標準出力に割り当たっています。
- したがって、通常はコンソールになります。
- piコマンド実行時にリダイレクトを行えば、ファイルに切り換えることができ
- ます。なお、input,outputファイル以外を使用する場合はそれらの実
- ファイル名をコンソールから入力させるため、inputのリダイレクトを行わな
- いで下さい。
-
-
- 4.5 inputファイルに対する入力
-
- ここでは、対話処理に欠かせないinputファイルに対する動作について説明
- します。
-
- ★改行までが一括ストリームとなる
-
- コンソール入力は[CR]を押すまではMS-DOS管理下にあります。だから[CR]
- を押すまでは誤った文字を修正することができるわけです。[CR]を押した時、それ
- までの文字が一括してHAPPyに送られてくるのです。
- program Aster(input,output);
- var ch : char ;
- begin
- while not eoln(input) do
- begin read(input,ch) ; write(output,'*',ch) end
- end.
- というプログラムがあったとします。
- コンソールから、
- HAPPy [CR]
- と入力すると、
- *H*A*P*P*y
- と出力されます。コンソールから 1文字入力するたびに、outputファイルに書き出
- されるようにも考えられますが、前述のように[CR]を押すまではユーザプログラム
- から管理が離れていますので、勘違いしないようにしてください。
-
- ★暗黙のreset(input)の行われる時期
-
- プログラム実行後、以下に示すことが初めて発生する直前に、暗黙的にinpu
- tに対してresetが行われます。
- ・input^の参照
- ・inputに対するget,read,readln,eof,eolnの処理
-
- reset(input)という動作は、inputを検査モードにして、最初の文字をin
- put^に入れる操作です。つまり、この時点でコンソール入力状態となります。
-
- program FistCharacter(input,output);
- begin
- write(input^,'が最初の文字です')
- end.
- というプログラムでは、一見inputから入力が行われないように見えますが、
- 実際は、inputからの入力が発生するわけです。
-
-
- ★inputに対するreadlnの特別扱い
-
- 規格では、readln(input) は次の文と等価であると定義されています。
- begin
- while not eoln(input) do get(input);
- get(input) { ● このget が曲者である }
- end
-
- 日本語でいえば、「改行までを読み飛ばし、改行の次の文字を読み込む」処理と
- なります。この通りに作ると、対話処理に向かなくなってしまいます。
- program NG(input,output);
- var i : integer;
- begin
- readln(i) ;
- writeln(i,' の2倍は',i*2,' です')
- end.
- というプログラムにおいて、コンソールから、
- 5[CR]
- と入れても、答えが出力されません。[CR]が押された時点でreadlnが次の文字を読
- み込もうとするため、MS-DOS管理下に入ってしまいます。ここで、もう一度
- [CR]を押すと答えが出力されることになります。
- 5 の2倍は 10です
- この不自然をなくすために、inputに対するreadlnは規格に準拠しな
- いことにしました。HAPPyでは、readln(input) は次の文と等価です。
- begin
- while not eoln(input) do get(input);
- { get(input) }
- end
- 本来readlnの中でやらなければならないgetの処理は、次に現れる
- get,read,readln,eof,eoln 処理または、input^の参照の時に行います。こ
- れで、先程のプログラムでも不自然なく処理が行えます。
-
- ★数字入力において数の形式に合わないものを入力した時には処理を打ち切る
-
- 大変申し訳なく、自分でもまずいと思っていますが、readやreadlnを
- 使って整数や実数を読み込む場合、数の形式に従った入力を行わなかったら、そこ
- で処理を打ち切ってしまいます。くれぐれも入力には注意して下さい。
- 操作性を考えると、打ち切らずに続行するべきですが、Version 0.0 では検討不
- 足のため安易な打切りにしました。将来は修正したいと思います。良い案があれば
- 教えて下さい。
-
-
- 4.6 input,output以外のファイルの扱い
-
- プログラム引数に指定したinput,output以外の外部ファイルと、そ
- の実ファイル名の対応の取り方について説明します。
- 他の処理系では、assign手続き等でプログラム実行中に動的に実ファイル
- との対応が取れるようになっているようですが、HAPPyは規格に対する拡張が
- ありませんので、とりあえず、次の方法で対応しています。
- 実ファイル名は、piコマンド投入直後、コンソールに出力されるガイドに従っ
- てコンソールより入力します。入力に当たって、最初の空白は読み飛ばされます。
- ファイル名は32文字以降は無視されます。入力の最後には[CR]が必要です。
- 次のプログラムの例で説明します。
-
- program FileExample(IntegerFile,RealFile,CharFile,BooleanFile,
- SetFile,output) ;
- const SetHigh = 31 ; SetLow = 0 ;
- var IntegerFile : file of integer ;
- RealFile : file of real ;
- CharFile : file of char ;
- BooleanFile : file of Boolean ;
- SetFile : file of set of SetLow..SetHigh ;
- i : integer ;
- begin
- rewrite(IntegerFile) ; write(Integerfile, 123) ;
- rewrite(RealFile) ; write(RealFile , 3.14) ;
- rewrite(CharFile) ; write(CharFile , 'H') ;
- rewrite(BooleanFile) ; write(BooleanFile, True) ;
- rewrite(SetFile) ; write(SetFile , [1,2,3]) ;
-
- reset(IntegerFile) ; writeln('Integer=',IntegerFile^:5) ;
- reset(RealFile) ; writeln('Real =',RealFile^:5:2) ;
- reset(CharFile) ; writeln('Char =',CharFile^:5) ;
- reset(BooleanFile) ; writeln('Boolean=',BooleanFile^) ;
- reset(SetFile) ; write ('Set =');
- for i:=SetLow to SetHigh do if i in Setfile^ then write(i:3) ;
- end.
-
- コンパイル後piコマンドを起動すると、次のようになります。
-
- H:\> pi
- *HAPPy: ファイル( integerfile realfile charfile booleanfile setfile)の
- 実ファイル名を入力して下さい
- integerfile : INTEGER ─┐各ファイルについて、ファイル名を聞い
- realfile : REAL │てくるのそれぞれ入力する。
- charfile : CHAR │この例では、大文字の部分が入力した部
- booleanfile : BOOLEAN │分である。
- setfile : SET ─┘
-
- *HAPPy: プログラム(fileexample) を実行します
- Integer= 123 ─┐
- Real = 3.14 │
- Char = H │プログラムから出力された内容
- Boolean= TRUE │
- Set = 1 2 3 ─┘
-
- ★注意事項
-
- この方法だと具合が悪いことがあります。
- コンソールからファイル名を入力せよ、ということはinputファイルから入
- 力せよ、と同じことなので、もし標準入力がリダイレクトされていると具合が悪い
- のです。ここも規格を満たさない部分なので不満が残ってしまいます。
- input以外のファイルを使う時は、標準入力をリダイレクトさせないように
- して下さい。
-
- ★ファイル構造
-
- Version 0.0 では、テキストファイル以外のファイル構造について公開していま
- せん。したがって、テキストファイル以外のファイルについては、HAPPyとそ
- の他のシステムとの間でやりとりを行うことを考えていません。
- テキストファイルは、一般のテキストエディタで作成される構造と同じです。
- HAPPyで作ったテキストファイルは、規格に従って、ファイルが空の場合を
- 除いて必ず最後に改行マークがつきます。
-
- ★ファイル入出力のエラーについて
-
- Version 0.0 では、テキストファイルへのwrite,writeln,put に関しては障害チ
- ェックを行っていません(エラーメッセージはあるが実際にはさぼっている) 。こ
- のため、ディスクが満杯になってもエラーが検出されません。
- その他のエラーチェックは行っております。
-
-
-
- 5.終了コードとその応用例
-
- pcコマンド、piコマンドはMS-DOSのバッチファイル等で利用できる終
- 了コード(エラーレベルコード)を返します。
- 正常終了は、終了コードが0になります。以下に、各コマンドの終了コードを示
- します。
-
- PC.EXE(コンパイラ)の終了コード
- ┌───┬──────────────────────┐
- │コード│ 意 味 │
- ├───┼──────────────────────┤
- │ 0 │コンパイル正常 │
- │ 1 │コンパイルエラーがあった │
- │ 2 │コンパイルエラー以外のエラー発生 │
- │ 3 │アセンブル中にエラ発生 │
- └───┴──────────────────────┘
-
- PI.EXE(インタプリタ)の終了コード
- ┌───┬──────────────────────┐
- │コード│ 意 味 │
- ├───┼──────────────────────┤
- │ 0 │正常終了 │
- │ 1 │ランタイムエラー以外により処理打切り │
- │ 2 │ランタイムエラー発生により処理打切り │
- └───┴──────────────────────┘
-
- この終了コードをバッチファイルで判定すれば、効率的なプログラム開発が行え
- ます。
- 例えばHAPPyに添付されているバッチファイルHAPPY.BAT は、
- (1) コンパイラを起動する
- (2) コンパイルエラーがあれば、RED2テキストエディタでエラーメッセージ
- ファイルを開く
- (3) RED2のタグジャンプ機能を駆使して、コンパイルエラー箇所を効率よく修
- 正する
- (4) 修正後、再度コンパイラを起動する
- (5) コンパイルエラーがなければ、インタプリタでプログラムを実行する
- という一HAPPyを使った一連のプログラム開発を効率よく行うための例です。
-
- ┌──────────────────────────┐
- │ echo off │
- │ rem *** HAPPy.BAT *** │
- │ rem コンパイル、コンパイルエラー修正、実行を │
- │ rem 制御するバッチファイルです。 │
- │ rem ここではテキストエディタにRED2を使っています。│
- │ :compile │
- │ pc %1 >e │
- │ if errorlevel 2 goto end │
- │ if not errorlevel 1 goto run │
- │ red e │
- │ echo 再コンパイルします │
- │ pause │
- │ goto compile │
- │ :run │
- │ echo 実行を開始します │
- │ pause │
- │ pi │
- │ echo on │
- │ :end │
- └─────── HAPPY.BAT のリスト ────────┘
-
-
-
- 6.ランタイムエラーとPascalソースの対応の取り方
-
- P-codeインタプリタがユーザプログラムを実行中、誤り等発見するとラン
- タイムエラーメッセージを出して処理を打ち切ります。
- ここでは、ランタイムエラーメッセージから、Pascalソース上の場所の見
- つけ方を説明します。
-
- 例えば、次のようなプログラム(ソースファイル名=RunErr.PAS) で説明しまし
- ょう。
-
- 1: {$d+} { 検査コードの生成指示 }
- 2: program OutOfRange ;
- 3: var i : -5..+5 ; { -5から5 までしか値をとれない }
- 4: begin
- 5: i := Maxint ; { 範囲外の値を代入しようとしている }
- 6: end.
-
- このプログラムをコンパイルして実行すると、次のようなエラーメッセージが出
- 力されます。
-
- *** [ADDR=6] HAPPy Run-time error R049:
- -- 代入文: 右辺値(2147483647)が範囲内(-5 ~5)にない : 処理打ち切り ***
-
- エラーメッセージを見ればわかるように、代入文で範囲外の値を代入しようとし
- たために発生した誤りです。
- ここで、[ADDR=6] という部分に着目して下さい。仮想計算機の6番地でこのエ
- ラーが発生していることを表しています。番地とソースの対応を取るために、再度
- アセンブルリスト出力指定でこのソースをコンパイルしなおします。
- pc -a RunErr.PAS >RunErr.ASM
- 上のようにタイプすると、RunErr.ASMというファイルにアセンブルリストが出来上
- がります。このファイルを見てください。
- ここで、ADDRが6番地のところを探し、それよりも上にある一番近いソースファ
- イルの名前と行番号の入ったところをみつけます。この例で言えば、ソースファイ
- ル名RunErr.pasの5行目、すなわち
- i := Maxint ;
- という代入文に誤りがあることがこれでわかります。
- もしお使いのエディタがタグジャンプ機能を有していれば、RunErr.ASMを開き、
- Pascalソースファイル(行番号)という形をしたところにカーソルをもって
- いって、タグジャンプキーを押せば、誤りのあるソース上の行にカーソルをダイレ
- クト移動させることができます。
-
- ADDR OP P Q P-code source statement
- ================================================
- ; Writen by HAPPy Pascal Compiler Version 0.0
- ; Pascal source file name=RunErr.PAS
- N outofrange
- ; RunErr.PAS(4)
- 0: 11 0 0 mst 0
- 1: 12 0 3 cup 0 L 3
- 2: 58 0 0 stp
- L3
- ; RunErr.PAS(5) ←────ソース上の場所
- 3: 13 1 8 ent 1 L 4
- 4: 13 2 6 ent 2 L 5
- 5: 66 1 9 ldci 2147483647
- ●6: 26 49 11 chki 49 -5 5 ←───────┐
- 7: 3 0 19 sroi 7 │
- ; RunErr.PAS(6) │
- 8: 14 0 0 retp エラー発生場所(6番地)
- L4= 8
- L5= 6
- Q
- 9:
- ~: constant data
- 11:
-
-
-
- ──────── 以上 (OPERATE.DOC) 終わり───────